// JavaScript Document
/*jslint browser:true */

function actualizeazaIcoanaStatus(validare, componenta) {
    if (validare) {
        componenta.setAttribute("class", "checked");
    } else {
        componenta.setAttribute("class", "warning");
    }
}

function isCampGol(x) {
    return x === null || x === "";
}

function isCaracterAlfabet(x) {
    return x.match(/^[A-Za-z]+$/);
}

function validareLungime(x, lungime) {
    return x.length >= lungime;
}

function isCifra(x) {
    return (x.match(/^\d+(?:\.\d+)?$/));
}

function isNumar(x) {
    return !isNaN(x);
}

function isInInterval(x, minim, maxim) {
    return x >= minim && x <= maxim;
}

function isEmail(x) {
    var atpos = x.indexOf("@"),
        dotpos = x.lastIndexOf(".");
    return !(atpos < 1 || dotpos < atpos + 2
    || dotpos + 2 >= x.length);
}

function isCaractere(x, caractere) {
    return new RegExp("[" + caractere + "]").test(x);
}

function validareNume() {
    var x = document.forms.formular.fNume.value,
        parentX = document.forms.formular.fNume.parentNode,
        validare = !isCampGol(x) && isCaracterAlfabet(x);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

function validareParola() {
    var x = document.forms.formular.fParola.value,
        parentX = document.forms.formular.fParola.parentNode,
        validare = !isCampGol(x) && validareLungime(x, 5);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

function validareInputEmail(input) {
    var parentX = input.parentNode,
        validare = isEmail(input.value);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

function validareInputGol(input) {
    var parentX = input.parentNode,
        validare = !isCampGol(input.value);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

// functie validare
function validareFormular() {
    var erori = "";
    if (!validareNume()) {
        erori += "\n - Nume";
    }
    if (!validareParola()) {
        erori += "\n - Parola";
    }
    if (!validareInputEmail(document.forms.formular.fEmail)) {
        erori += "\n - Email";
    }
    if (erori !== "") {
        window.alert("Urmatoarele campuri sunt invalide:" + erori);
        return false;
    }
}

function validareFormularDialog() {
    var x = document.forms.formularDialog.fNume.value,
        parentX = document.forms.formularDialog.fNume.parentNode,
        validare = !isCampGol(x);
    actualizeazaIcoanaStatus(validare, parentX);
    if (!validare) {
        window.alert("Campul este gol.");
    }
    return validare;
}

function actualizeazaButton(idButon, valid) {
    document.getElementById(idButon).disabled = valid ? "" : "disabled";
}

function validareInputNrMinim(input) {
    var parentX = input.parentNode,
        validare = validareLungime(input.value, 5);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

function validareInputAlfabet(input) {
    var parentX = input.parentNode,
        validare = isCaracterAlfabet(input.value);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

function validareInputCifra(input) {
    var parentX = input.parentNode,
        validare = isCifra(input.value);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

function validareInputNumar(input) {
    var parentX = input.parentNode,
        validare = !isCampGol(input.value) && isNumar(input.value);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

function validareInputVarsta(input) {
    var parentX = input.parentNode,
        validare = isCifra(input.value) && isInInterval(input.value, 18, 100);
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}

function validareInputCaracterInvalid(input) {
    var parentX = input.parentNode,
        validare = !isCaractere(input.value, ",.:");
    actualizeazaIcoanaStatus(validare, parentX);
    return validare;
}
